package com.project.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.project.bean.GradeBean;
import com.project.bean.RoleBean;
import com.project.bean.UserBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface IUserMapper extends BaseMapper<UserBean> {
    //获取用户权限集合
    List<GradeBean> findByUser( Integer userId);

    List<RoleBean> findRoleByUserId(Integer userId);

    /**
     * 查询角色的权限
     * @param roleIds  角色Id数组
     * @return  权限集合
     */
    List<GradeBean> findByRoleIds(@Param("roleIds") Integer[] roleIds);

    /**
     * 删除用户
     * 先删除中间表该用户的权限，再删除用户
     * @param userId    用户id
     */
    void delUser(Integer userId);

    /**
     * 查询用户
     * 同时查询该用户拥有的角色集合（打✅）、权限集合（列出集合）
     * @param userId    用户id
     * @return  用户对象
     */
    UserBean findByUserId(Integer userId);

    /**
     * 根据用户id删除，用户角色中间表
     * @param userId    登录用户
     */
    void delUserRoleByUserId(Integer userId);

    /**
     * 根据用户id，添加角色集合
     * @param userId    用户id
     * @param roleIds   角色id数组
     */
    void addUserRoleByUserId(@Param("userId") Integer userId, @Param("roleIds") Integer[] roleIds
                             );


    void addUserRoleAndGradeByUserId(@Param("userId") Integer userId, @Param("roleIds") List<RoleBean> roleIds,
                                     @Param("gradeIds") List<GradeBean> gradeIds);
}
